%% == format_for_numbers ==
[NUMCARD] -> [TOKEN grm="ЧИСЛ"];
[NUMORD] -> [TOKEN grm="ЧИСЛ-П"];
[BIG-NUM] -> 'тысяча' | 'миллион' | 'миллиард' | 'триллион';
[ABBR] -> [TOKEN grm="аббр" root] [DOT];
[КОЛИЧ1] -> [BIG-NUM] | [DIG] | [NUMCARD]; %% [TOKEN filename!="num_pr.dat"]
[КОЛИЧ2] -> [BIG-NUM] | [DIG] | [NUMCARD] | [NUMORD] | [ABBR];
[КОЛИЧ] -> [КОЛИЧ1] [КОЛИЧ2 root];
[КОЛИЧ] -> [КОЛИЧ] [КОЛИЧ2 root];

[SMALL-DIG] -> '2' | '3' | '4' | '*2' | '*3' | '*4' ;
[SMALL-NUM] -> 'два' | 'три' | 'четыре' | [SMALL-DIG];
[КОЛИЧ] -> [SMALL-NUM] [BIG-NUM root grm="ед, рд"]; %% : $0.grm := set_nomacc_plural($2.grm);
[КОЛИЧ] -> [NUMCARD] [BIG-NUM root grm="мн, рд"]; %% : $0.grm := set_nomacc_plural($2.grm);
				 
%% == format_for_num_complex ==
[СЛОЖ_ЧИСЛ] -> [DIG] ([COMMA] | [DOT]) [DIG root];

%% == format_for_similar_numerals ==
%% проблема с различением "23,7 и 5" и "23, 7 и 5" 

[ОДНОР_ЧИСЛ1] -> [NUMCARD] | [DIG] | [КОЛИЧ] | [СЛОЖ_ЧИСЛ];
[ОДНОР_ЧИСЛ] -> [ОДНОР_ЧИСЛ1] ([CONJ]|[COMMA]) [ОДНОР_ЧИСЛ1 root] : $0.grm := agrc($1.grm, $3.grm);
[ОДНОР_ЧИСЛ] -> [ОДНОР_ЧИСЛ] ([CONJ]|[COMMA]) [ОДНОР_ЧИСЛ1 root];

[ROOT] -> [КОЛИЧ] | [СЛОЖ_ЧИСЛ] | [ОДНОР_ЧИСЛ];